package com.xp.flow.component;

import com.yomahub.liteflow.annotation.LiteflowComponent;
import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;
import java.util.Map;

/**
 * 结束节点组件
 * 流程的出口点，处理最终结果和清理工作
 * 
 * @author AI Assistant
 * @since 1.0.0
 */
@Slf4j
@LiteflowComponent("END")
public class EndComponent extends BaseFlowComponent {

    @Override
    public void process() {
        // 获取节点配置
        Map<String, Object> config = getNodeConfig();
        String nodeName = getConfigValue("name", "结束节点");
        
        // 记录结束节点执行
        logExecution("流程结束执行: %s", nodeName);
        
        // 获取输入数据（流程执行结果）
        Map<String, Object> inputData = getInputData();
        
        // 创建最终结果
        Map<String, Object> result = new HashMap<>();
        
        // 提取流程元数据
        Map<String, Object> metadata = (Map<String, Object>) inputData.get("metadata");
        if (metadata != null) {
            Long startTime = (Long) metadata.get("startTime");
            if (startTime != null) {
                long endTime = System.currentTimeMillis();
                long duration = endTime - startTime;
                metadata.put("endTime", endTime);
                metadata.put("duration", duration);
                logExecution("流程执行耗时: %d ms", duration);
            }
        }
        
        // 构建最终结果
        result.put("success", true);
        result.put("message", "流程执行完成");
        result.put("data", inputData);
        result.put("metadata", metadata);
        
        // 记录执行结果
        logExecution("流程执行结果: success=%s, data=%s", 
                result.get("success"), inputData);
        
        // 设置最终输出
        setOutputData(result);
        
        logExecution("结束节点执行完成");
    }
}